package cn.itcast.web.controller.cargo;

import cn.itcast.service.cargo.ContractProductService;
import cn.itcast.vo.ContractProductVo;
import cn.itcast.web.controller.BaseController;
import cn.itcast.web.utils.DownloadUtil;
import com.alibaba.dubbo.config.annotation.Reference;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.ByteArrayOutputStream;
import java.util.List;

@Controller
@RequestMapping("/cargo/contract")
public class OutProductController extends BaseController {
    @Reference
    private ContractProductService contractProductService;

    @RequestMapping("/print")
    public String print(){
        return "cargo/print/contract-print";
    }

    /**
     * 导出excel格式的出货表
     * /cargo/contract/printExcel.do
     * 参数：inputDate=2019-06
     * 返回excel文件
     */
//    @RequestMapping("/printExcel")
//    @ResponseBody
//    public void printExcel(String inputDate)throws Exception{
//        //1.创建工作簿
//        Workbook wb = new XSSFWorkbook();
//
//
//        //2.生成工作单
//        Sheet sheet = wb.createSheet("出货表");
//        //设置合并列
//        /**
//         * 参数依次为： 开始行号，结束行号，开始列号，结束列号
//         */
//        sheet.addMergedRegion(new CellRangeAddress(0,0,1,8));
//        //设置列宽， 参数为：列索引，列宽度值
//        sheet.setColumnWidth(0,6*256);
//        sheet.setColumnWidth(1,21*256);
//        sheet.setColumnWidth(2,16*256);
//        sheet.setColumnWidth(3,29*256);
//        sheet.setColumnWidth(4,11*256);
//        sheet.setColumnWidth(5,11*256);
//        sheet.setColumnWidth(6,11*256);
//        sheet.setColumnWidth(7,11*256);
//        sheet.setColumnWidth(8,11*256);
//        sheet.setColumnWidth(9,11*256);
//
//        //3.创建表头行
//        Row row = sheet.createRow(0);
//        //3.4.设置行高度
//        row.setHeightInPoints(36);
//
//        //inputDate: 2019-10 或 2019-08
//        //3.1 设置标题
//        String title = inputDate.replaceAll("-0","年").replaceAll("-","年")+"月份出货表";
//        //3.2 设置第二列的内容作为标题
//        Cell cell = row.createCell(1);
//        cell.setCellValue(title);
//        //3.3 设置大标题样式
//        cell.setCellStyle(bigTitle(wb));
//
//
//        //4.创建内容行
//        //4.1 创建标题
//        row = sheet.createRow(1);
//
//        String[] titles = {"客户","订单号","货号","数量","工厂","工厂交期","船期","贸易条款"};
//        for(int i=0;i<titles.length;i++){
//            cell = row.createCell(i + 1);
//            cell.setCellValue(titles[i]);
//            //设置样式
//            cell.setCellStyle(title(wb));
//        }
//
//        //4.2 内容
//        //查询数据库获取内容
//        int index = 2;
//        List<ContractProductVo> list = contractProductService.findByShipTime(getLoginCompanyId(),inputDate);
//        if(list!=null){
//            for(ContractProductVo vo:list){
//
//                //创建行
//                row = sheet.createRow(index++);
//                //设置行高
//                row.setHeightInPoints(24);
//
//                //设置列内容
//
//
//                //客户列
//                cell = row.createCell(1);
//                if(vo.getCustomName()!=null) {
//
//                    //样式
//                    cell.setCellStyle(text(wb));
//                    //内容
//                    cell.setCellValue(vo.getCustomName());
//                }
//
//                //订单列
//                cell = row.createCell(2);
//                if(vo.getContractNo()!=null) {
//
//                    //样式
//                    cell.setCellStyle(text(wb));
//                    //内容
//                    cell.setCellValue(vo.getContractNo());
//                }
//                //货号列
//                cell = row.createCell(3);
//                if(vo.getProductNo()!=null) {
//
//                    //样式
//                    cell.setCellStyle(text(wb));
//                    //内容
//                    cell.setCellValue(vo.getProductNo());
//                }
//
//                //数量列
//                cell = row.createCell(4);
//                if(vo.getCnumber()!=null) {
//
//                    //样式
//                    cell.setCellStyle(text(wb));
//                    //内容
//                    cell.setCellValue(vo.getCnumber());
//                }
//
//                //工厂列
//                cell = row.createCell(5);
//                if(vo.getFactoryName()!=null) {
//
//                    //样式
//                    cell.setCellStyle(text(wb));
//                    //内容
//                    cell.setCellValue(vo.getFactoryName());
//                }
//
//                //交期列
//                cell = row.createCell(6);
//                if(vo.getDeliveryPeriod()!=null) {
//
//                    //样式
//                    cell.setCellStyle(text(wb));
//                    //内容
//                    cell.setCellValue(vo.getDeliveryPeriod());
//                }
//
//                //船期列
//                cell = row.createCell(7);
//                if(vo.getShipTime()!=null) {
//
//                    //样式
//                    cell.setCellStyle(text(wb));
//                    //内容
//                    cell.setCellValue(vo.getShipTime());
//                }
//
//                //贸易条款列
//                cell = row.createCell(8);
//                if(vo.getTradeTerms()!=null) {
//                    //样式
//                    cell.setCellStyle(text(wb));
//                    //内容
//                    cell.setCellValue(vo.getTradeTerms());
//                }
//            }
//
//        }
//
//        //3.把工作簿写出到浏览器响应（给用户下载Excel)
//
//      /*  //3.2. 设置写出的文件格式： excel格式
//        response.setContentType("application/octet-stream;charset=utf-8");
//        //3.2 提示浏览器一个下载的文件名称: Content-Disposition
//        response.addHeader("Content-Disposition","attachment;filename=product.xlsx");
//
//        OutputStream outputStream = response.getOutputStream();
//
//        //3.3 把工作簿写出到响应中
//        wb.write(outputStream);
//        outputStream.flush();*/
//
//        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//        wb.write(outputStream);
//        new DownloadUtil().download(outputStream,response,"出货表.xlsx");
//    }
//
//
//    //大标题的样式
//    public CellStyle bigTitle(Workbook wb){
//        CellStyle style = wb.createCellStyle();
//        Font font = wb.createFont();
//        font.setFontName("宋体");
//        font.setFontHeightInPoints((short)16);
//        font.setBold(true);//字体加粗
//        style.setFont(font);
//        style.setAlignment(HorizontalAlignment.CENTER);				//横向居中
//        style.setVerticalAlignment(VerticalAlignment.CENTER);		//纵向居中
//        return style;
//    }
//
//    //小标题的样式
//    public CellStyle title(Workbook wb){
//        CellStyle style = wb.createCellStyle();
//        Font font = wb.createFont();
//        font.setFontName("黑体");
//        font.setFontHeightInPoints((short)12);
//        style.setFont(font);
//        style.setAlignment(HorizontalAlignment.CENTER);				//横向居中
//        style.setVerticalAlignment(VerticalAlignment.CENTER);		//纵向居中
//        style.setBorderTop(BorderStyle.THIN);						//上细线
//        style.setBorderBottom(BorderStyle.THIN);					//下细线
//        style.setBorderLeft(BorderStyle.THIN);						//左细线
//        style.setBorderRight(BorderStyle.THIN);						//右细线
//        return style;
//    }
//
//    //文字样式
//    public CellStyle text(Workbook wb){
//        CellStyle style = wb.createCellStyle();
//        Font font = wb.createFont();
//        font.setFontName("Times New Roman");
//        font.setFontHeightInPoints((short)10);
//
//        style.setFont(font);
//
//        style.setAlignment(HorizontalAlignment.LEFT);				//横向居左
//        style.setVerticalAlignment(VerticalAlignment.CENTER);		//纵向居中
//        style.setBorderTop(BorderStyle.THIN);						//上细线
//        style.setBorderBottom(BorderStyle.THIN);					//下细线
//        style.setBorderLeft(BorderStyle.THIN);						//左细线
//        style.setBorderRight(BorderStyle.THIN);						//右细线
//
//        return style;
//
//    }
}
